package net.jalisq.builder.joins;

import net.jalisq.builder.*;
import net.jalisq.builder.joins.*;
import net.jalisq.types.*;


public interface Joinable {

    public JoinOrCond JOIN(Table table);
    public JoinOrCond INNER_JOIN(Table table);
    public JoinOrCond CROSS_JOIN(Table table);
    public JoinOrCond STRAIGHT_JOIN(Table table);
    
    
    public JoinOrCond JOIN(Table table, On on);
    public JoinOrCond INNER_JOIN(Table table, On on);
    public JoinOrCond STRAIGHT_JOIN(Table table, On on);
    public JoinOrCond CROSS_JOIN(Table table, On on);
    public JoinOrCond LEFT_JOIN(Table table, On on);
    public JoinOrCond RIGHT_JOIN(Table table, On on);
    public JoinOrCond LEFT_OUTER_JOIN(Table table, On on);
    public JoinOrCond RIGHT_OUTER_JOIN(Table table, On on);
    
    public JoinOrCond JOIN(Table table, Using using);
    public JoinOrCond INNER_JOIN(Table table, Using using);
    public JoinOrCond CROSS_JOIN(Table table, Using using);
    public JoinOrCond LEFT_JOIN(Table table, Using using);
    public JoinOrCond RIGHT_JOIN(Table table, Using using);
    public JoinOrCond LEFT_OUTER_JOIN(Table table, Using using);
    public JoinOrCond RIGHT_OUTER_JOIN(Table table, Using using);
    

}